#ifndef _MYSQL_H
#define _MYSQL_H

#include <stdbool.h>
#include "/usr/include/mysql/mysql.h"
#include <string.h>
#include <stdlib.h>
#include <openssl/md5.h>
#include <openssl/sha.h>
#include <openssl/rsa.h>


// 将字符串进行加密
// 利用SHA256 算法加密
// d: 需要加密的字符串
// 返回值，经过加密后，再进行可视化处理的字符串
char *str_to_sha256(const unsigned char *d);

// 登陆数据库
// 参数说明：mysql mysql类型的指针对象  account: 用于登陆mysql数据库的账号  password：用于登陆mysql数据库的密码
//          dbname：用于数据库操作的数据库名
// 放回值： 成功返回true    失败返回false
bool connect_mysql(MYSQL *mysql, const char *account, const char *password, const char* dbname);

// 用户登陆
// 使用说明：用户需要在此函数内输入ftp服务器的账号 和 密码用于验证，登陆成功后即可使用ftp
// 返回值： 成功返回true    失败返回false
bool login(MYSQL *mysql);

// 创建一个用户
// 使用说明：当用户想要使用ftp服务器，但又没有账号时，我们可以先注册一个，不能使用创建数据库中已有的账号名
// 返回值：成功返回true 失败返回false 
bool create_user(MYSQL *mysql);

// 登陆数据库
// 返回值：成功返回true 失败返回 false
bool connect_mysql1(MYSQL *mysql);

// 关闭数据库
// 成功返回true 失败返回false
bool close_mysql(MYSQL *mysql);

// 读取用户输入存放到str中      返回值：成功返回str，失败返回NULL
// 参数说明: 
//      str: 将要输入的字符数组，size：字符数组的大小       最多能输入size - 1个字符
// 相对于fgets来说，此函数将最后的换行符删除
char *f_gets(char *str, int size);

// mysql 数据库模块总函数
// 功能说明：此函数用于ftp 服务器系统的用户登陆选择 用此函数来实现ftp 服务器系统的用户信息采集与验证
// 可选功能：用户登陆
// 返回值：true 验证或注册成功，false 验证或注册失败
bool mysql_module(void);

#endif